/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejb.dao;

import entidades.Usuario;
import exceptions.IlusCodeException;
import java.io.Serializable;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author IlusCode Software para aprender a programar
 */
@Stateless
public class UsuarioFacade extends AbstractFacade<Usuario> implements Serializable {
    private static final long serialVersionUID = 4747711700521260085L;
    
    
    @PersistenceContext(unitName = "ProyectoFinal-ejbPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public UsuarioFacade() {
        super(Usuario.class);
    }
    
     public List<Usuario> buscarMailPass(String email, String pass) {


        List<Usuario> list = getEntityManager().createNamedQuery("Usuario.controlUser").setParameter("email", email).setParameter("password", pass).getResultList();

        return list;
    }

    public boolean login(String email, String pass){



        if (!buscarMailPass(email, pass).isEmpty()) {

            return true;
        } else {
            
            return false;
            //throw new IlusCodeException("No existe usuario y/o password");
        }


    }

    public boolean existeAlias(String alias) throws IlusCodeException {

        boolean existe = false;

        Usuario user = (Usuario) getEntityManager().createNamedQuery("Usuario.findByAlias").setParameter("alias", alias).getSingleResult();
        if (user != null) {
            existe = true;
            throw new IlusCodeException("Ya existe el alias ingresdo");
        }

        return existe;
    }

    public boolean existeEmail(String email) throws IlusCodeException {

        boolean existe = false;
        if (!buscarPorMail(email).isEmpty()) {

            existe = true;
            throw new IlusCodeException("Ya existe el mail ingresado");
        }
        return existe;
    }

    public List<Usuario> buscarPorMail(String email) {

        List<Usuario> miLista = getEntityManager().createNamedQuery("Usuario.findByEmail").setParameter("email", email).getResultList();

        return miLista;
    }

    public void guardarUsuario(String nombre, String apellido, String email, String password, String alias) throws IlusCodeException {

        if (!buscarPorMail(email).isEmpty()) {

            //Usuario user=new Usuario(1,nombre,apellido,email,password,alias);
            

            //getEntityManager().persist(user);

        } else {
            throw new IlusCodeException("Ya existe el email ingresado");
        }

    }
    
    public Usuario validar(String email, String password) {

		Usuario emp = (Usuario) em.createNamedQuery("Usuario.controlUser").setParameter("email", email).setParameter("password", password)
				.getSingleResult();

		return emp;

	}
    
}
